package com.tan00xu.service.impl;

import com.alibaba.fastjson.JSON;
import com.tan00xu.pojo.User;
import com.tan00xu.service.TokenService;
import com.tan00xu.utils.CmdOutputInformationUtils;
import com.tan00xu.utils.JWTUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Map;

@Service
public class TokenServiceImpl implements TokenService {

    //    @Autowired
    @Resource
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 验证token成功后，在redis中用token查询用户
     * @param token 前端传回的token
     * @return User
     */
    @Override
    public User checkToken(String token) {
//        CmdOutputInformationUtils.error("checkToken中的token："+token);
        //判断token是否为空
        if (StringUtils.isBlank(token)) {
            return null;
        }
        Map<String, Object> stringObjectMap = JWTUtils.checkToken(token);
        //判断token是否解析成功
        if (stringObjectMap == null) {
            return null;
        }
        //在redis中根据token查询用户是否存在
        //不存在说明以过期
        String user = redisTemplate.opsForValue().get("TOKEN_" + token);
        if (StringUtils.isBlank(user)) {
            return null;
        }
        //返回成功信息
        return JSON.parseObject(user, User.class);
    }

    @Override
    public Boolean deleteRedis(String key) {
        return redisTemplate.delete(key);
    }

}

